#include "Utils/MathExpr.h"
#include <iostream>
#include <algorithm>

int main()
{
    std::cout << "Hello Wor112223ld!\n";

    //std::string f1 = "2+2*abs(-3)*5+3"; // 结果 35
    //std::string f1 = "log(100)^2"; // 结果 4
    //std::string f1 = "abs(6/6)-2"; // 结果 -1
    //std::string f1 = "-abs(6/6)-2"; // 结果 -3
    //std::string f1 = "2*MV_E_Vel/(abs(MV_Peak_lat)+abs(MV_Peak_sept))"; // 结果 4
    //std::string f1 = "-1 * abs(6/6)-2"; // 结果 -3
    //std::string f1 = "2*3*3^4"; // 结果 486
    //std::string f1 = "2+2*3*5+3";  // 结果 35
    //std::string f1 = "1+-(2*3+abs(-2))*2";  // 结果 -15
    //std::string f1 = "10*SBP";
    //std::string f1 = "10*SBP_L*SBP";
    //std::string f1 = "pow(SBP,2)+1";
    //std::string f1 = "2*(5+4*pow(SBP,2))+1";
    //std::string f1 = "pow(SBP,pow(2,2))+1";
    //std::string f1 = "max(SBP,9.5,10.5)+2";
    std::string f1 = "2*max(SBP,9.5,pow(SBP,4))+2"; // 结果 1252
    //std::string f1 = "2*avg(10,SBP,abs(-5),pow(SBP,2),10)+1"; // 结果 23

    double d1 = 2.0;
    double d2 = 3.0;
    //double d3 = pow(d1, d2);
    double d3 = std::max(d1, d2);
    //double d3 = std::min(d1, d2);
    std::cout << d3 << "\n";


    MathExpr::MathExpression expr;
    /*expr.add_var("MV_E_Vel", 60);
    expr.add_var("MV_Peak_lat", -10);
    expr.add_var("MV_Peak_sept", -20);*/
    expr.add_var("SBP", 5);
    expr.add_var("SBPAAAAAAAAAAAAA", 8);
    expr.add_var("SBP_L", 6);
    //for (auto formulaItem : formulaItems)
    //{
    //    expr.add_var(formulaItem.first.ItemName.toStdString(), formulaItem.second->m_finalValue);
    //}
    auto tv = expr.eval(f1);
    double v1 = tv.first ? tv.second : nanf("");
    expr.RPN_Print();
    std::cout << v1 << "\n";
    std::system("pause");
    //std::string x;
    //std::cin >> x;
}
